package cn.edu.imnu.Service.impl;


import cn.edu.imnu.entity.Result;
import cn.edu.imnu.entity.dto.CompanyListdto;
import cn.edu.imnu.entity.dto.DrugListdto;
import cn.edu.imnu.entity.dto.Drugadddto;
import cn.edu.imnu.entity.dto.Drugupdatedto;
import cn.edu.imnu.entity.po.Drug;
import cn.edu.imnu.Service.DrugService;
import cn.edu.imnu.entity.vo.CompanyListvo;
import cn.edu.imnu.entity.vo.DrugListvo;
import cn.edu.imnu.mapper.DrugMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
* @author Administrator
* @description 针对表【drug】的数据库操作Service实现
* @createDate 2025-06-10 11:30:37
*/
@Service
public class DrugServiceImpl
implements DrugService{
    @Autowired
    private DrugMapper drugMapper;
    @Override
    public DrugListvo gerAllDrugs(DrugListdto dto) {
        Integer currentPage = dto.getCurrentPage() != null ? dto.getCurrentPage() : 1;
        Integer pageSize = dto.getPageSize() != null ? dto.getPageSize() : 10;
        PageHelper.startPage(currentPage, pageSize);
        List<DrugListdto> drugList = drugMapper.selectAllDrugs(dto);
        PageInfo<DrugListdto> pageInfo = new PageInfo<>(drugList);
        // 封装结果到SaleListvo
        DrugListvo drugListvo = new DrugListvo();
        drugListvo.setList(pageInfo.getList());
        drugListvo.setTotal(pageInfo.getTotal());
        drugListvo.setCurrentPage(pageInfo.getPageNum());
        drugListvo.setPageSize(pageInfo.getPageSize());
        return drugListvo;
    }

    @Override
    public Result addDrug(Drugadddto dto) {
        if (dto.getDrugName() == null) {
            return Result.error("名称不能为空");
        }
        Date now = new Date();
        dto.setCreatetime(now);
        dto.setUpdatetime(now);
        // 执行插入
        int count = drugMapper.insertDrug(dto);
        if (count > 0) {
            return Result.success("信息添加成功");
        }
        return Result.error("信息添加失败");
    }

    @Override
    public Result deleteDrug(Long drugId) {
        if (drugId == null || drugId <= 0) {
            return Result.error("药物 ID 不合法");
        }

        // 执行删除操作
        int affectedRows =drugMapper.deleteByPrimaryKey(drugId);

        // 根据结果返回响应
        if (affectedRows > 0) {
            return Result.success("公司信息删除成功");
        } else {
            return Result.error("未找到 ID 为 " +drugId + " 的公司");
        }
    }

    @Override
    public Result updateDrug(Drugupdatedto dto) {
        if (dto.getDrugId() == null) {
            return Result.error("Id 不能为空");
        }

        // 2. DTO 转 PO（Sale）
        /*Sale sale = new Sale();
        BeanUtils.copyProperties(dto, sale);*/

        // 3. 调用 Mapper 动态更新
        int rows = drugMapper.updateSelective(dto);
        if (rows == 0) {
            return Result.error("未找到对应记录，修改失败");
        }

        return Result.success("修改成功");
    }
}
